# @Version        : 1.0
# @Update Time    : 2025/9/19 22:25
# @File           : fox_util.py
# @IDE            : PyCharm
# @Desc           : 文件描述信息
import random
import string


class FoxUtil:
    @staticmethod
    def is_empty(value):
        return value is None or value == ""

    @staticmethod
    def is_not_empty(value):
        return not FoxUtil.is_empty(value)

    @staticmethod
    def is_basic_type(value):
        basic_types = (int, float, str, bool)
        return isinstance(value, basic_types)

    @staticmethod
    def get_value_by_type(value, target_type):
        try:
            return target_type(value)
        except (ValueError, TypeError):
            return value

    @staticmethod
    def vague_match(patt: str, string: str) -> bool:
        """
        模糊匹配算法

        :param patt: 表达式
        :param string: 待匹配的字符串
        :return: 是否匹配
        """
        # 两者均为 None 时，直接返回 True
        if patt is None and string is None:
            return True

        # 两者其一为 None 时，直接返回 False
        if patt is None or string is None:
            return False

        # 如果表达式不带有*号，则只需简单equals即可 (这样可以使速度提升200倍左右)
        if "*" not in patt:
            return patt == string

        # 深入匹配（这里简化处理，实际可以实现更复杂的匹配逻辑）
        # 这里只是示例，实际项目中可能需要实现完整的模糊匹配算法
        import fnmatch

        return fnmatch.fnmatch(string, patt)

    @staticmethod
    def get_random_string(length: int) -> str:
        chars = string.ascii_letters + string.digits
        rng = random.SystemRandom()  # 使用系统随机源，线程安全
        return "".join(rng.choice(chars) for _ in range(length))
